package com.itany.corejava.code11_线程;

/**
 * @author MissChen
 * @date 2024年03月12日 11:18
 */
public class Test05_练习 {
    public static void main(String[] args) {

        // 运行后，出票的时候肯呢个不是按照顺序依次显示等
        // 在线程执行过程中，某个线程抢到CPU时间片，但是业务尚未执行完成
        // 被另一个线程抢走了CPU的时间片，将会先执行当前线程
        // 等后面再抢回来，才会继续执行之前的业务
        // 因此，会导致票数显示出来不是依次递减等

        // TicketRunnable tr=new TicketRunnable();
        // Thread t1=new Thread(tr,"线程1");
        // Thread t2=new Thread(tr,"线程2");
        // // t1.setPriority(10);
        // t1.start();
        // t2.start();


        TicketThread t1 = new TicketThread();
        t1.setName("t1");
        t1.setPriority(10);
        TicketThread t2 = new TicketThread();
        t2.setName("t2");
        t1.start();
        t2.start();

    }
}

class TicketRunnable implements Runnable {

    //共100张票
    private int num = 100;

    @Override
    public void run() {
        while (true) {


            if (num == 0) {
                break;
            } else {
                System.out.println(Thread.currentThread().getName() + "正在出票" + num--);
                // try {
                //     Thread.sleep(10);
                // } catch (InterruptedException e) {
                //     e.printStackTrace();
                // }
            }
        }
    }


}

class TicketThread extends Thread {
    static int num = 100;

    @Override
    public void run() {
        while (true) {


            if (num == 0) {
                break;
            } else {
                System.out.println(Thread.currentThread().getName() + "正在出票" + num--);

            }
        }
    }
}